define(['ko','jquery','Magento_Ui/js/lib/knockout/template/loader','mage/template'],function(ko,$,templateLoader,template){'use strict';var blockLoaderTemplatePath='ui/block-loader',blockContentLoadingClass='_block-content-loading',blockLoader,blockLoaderClass,loaderImageHref;templateLoader.loadTemplate(blockLoaderTemplatePath).done(function(blockLoaderTemplate){blockLoader=template($.trim(blockLoaderTemplate),{loaderImageHref:loaderImageHref});blockLoader=$(blockLoader);blockLoaderClass='.'+blockLoader.attr('class');});function isLoadingClassRequired(element){var position=element.css('position');if(position==='absolute'||position==='fixed'){return false;} return true;} function addBlockLoader(element){element.find(':focus').blur();element.find('input:disabled, select:disabled').addClass('_disabled');element.find('input, select').prop('disabled',true);if(isLoadingClassRequired(element)){element.addClass(blockContentLoadingClass);} element.append(blockLoader.clone());} function removeBlockLoader(element){if(!element.has(blockLoaderClass).length){return;} element.find(blockLoaderClass).remove();element.find('input:not("._disabled"), select:not("._disabled")').prop('disabled',false);element.find('input:disabled, select:disabled').removeClass('_disabled');element.removeClass(blockContentLoadingClass);} return function(loaderHref){loaderImageHref=loaderHref;ko.bindingHandlers.blockLoader={update:function(element,displayBlockLoader){element=$(element);if(ko.unwrap(displayBlockLoader())){addBlockLoader(element);}else{removeBlockLoader(element);}}};};});